<?php
/**
 * Created by PhpStorm.
 * User: Asnyc
 * Date: 2017/12/15
 * Time: 10:03
 */

namespace app\lib\validate;


use app\lib\exception\ParameterException;
use think\Exception;
use think\Request;
use think\Validate;

class BaseValidate extends Validate
{
    /**
     * @return bool
     * @throws Exception
     * 公共验证func
     */
    public function gocheck(){
        $request = Request::instance();
        $params = $request->param();
        $result = $this->batch()->check($params);
        if(!$result){
            $e = new ParameterException([
                'msg' => $this->error
            ]);
            throw $e;
        }else{
            return true;
        }
    }

    /**
     * @param $value
     * @param string $rule
     * @param string $data
     * @param string $field
     * @return bool
     * 非空验证func
     */
    protected function isNotEmpty($value,$rule='',$data='',$field=''){
        if (empty($value)){
            return false;
        }else{
            return true;
        }
    }

    /**
     * @param $value
     * @return bool
     * 手机号验证
     */
    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * @param $arrays
     * @return array
     * @throws ParameterException
     * 根据规则过滤来着客户端的数据
     */
    public function getDataByRule($arrays){
        if (array_key_exists('user_id', $arrays) | array_key_exists('uid', $arrays)) {
            // 不允许包含user_id或者uid，防止恶意覆盖user_id外键
            throw new ParameterException([
                'msg' => '参数中包含有非法的参数名user_id或者uid'
            ]);
        }
        $newArray = [];
        foreach ($this->rule as $key => $value) {
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }


    /**
     * @param $value
     * @param string $rule
     * @param string $data
     * @param string $field
     * @return bool|string
     * 传入参数是否正整数验证func
     */
    protected function isPostiveInteger($value,$rule='',$data='',$field=''){
        if(is_numeric($value)&&is_int($value + 0)&&($value + 0)>0){
            return true;
        }else{
            return $field.'一定得是正整数,不然是不行的哟!';
        }
    }
}